\chapter{Opis programu BiblioBot}

\hypertarget{labA}{}

\section{Koncepcja}

Bot jest aplikacją desktopową służącą to automatycznego pobierania danych ilościowych. Bot pozwala na wyszukiwanie dwóch rodzajów danych:
\begin {itemize}
\item Publikacje. W obecnej wersji obsługiwane są portale:
  \begin {itemize}
	\item Google scholar: http://scholar.google.com
	\item ICM: http://vls2.icm.edu.pl
	\item CiteSeerX: http://citeseerx.ist.psu.edu/
	\item DBLP: http://dblp.mpi-inf.mpg.de
	\end {itemize}
\item Patenty. W obecnej wersji obsługiwane są portale:
  \begin {itemize}
	\item Google patents: http://www.google.com/patents
	\item Baza patentów espacenet: http://ep.espacenet.com
	\end {itemize}
\end {itemize}

Program został wykonany w technologi java (wersja kompilatora: 1.6) 


\section{Opis działania}

\begin{center}
\begin{figure}[h]
\centerline{\includegraphics[scale=0.5]{przeplyw}}
\caption{Diagram przepływu danych}
\label{fig:przeplyw}
\end{figure}
\end{center}

Bot działa według następującego scenariusza: 
\begin {itemize}
\item Wczytanie danych konfiguracyjnych. Są to dane zawierające:
  \begin {itemize}
  \item listę technologii
  \item listę dziedzin
  \item zakres dat
  \end {itemize}
\item Następnie program dokonuje wyszukiwania na zadanych portalach. Odbywa się to w następujący sposób:
  \begin {itemize}
  \item dla wszystkich zdefiniowanych technologii program dokłada po kolei słowa kluczowe poszczególnych dziedzin. Dzięki temu uzyskuje warunek wyszukiwania publikacji, bądź patentu. Ten warunek możemy zapisać: „Nazwa technologii” i („słowo kluczowe 1 dziedziny” lub … lub „słowo kluczowe n dziedziny”). Dany artykuł/patent podlega warunkowi wyszukiwania, jeżeli w jego tytule, abstrakcie, lub wykazie słów kluczowych znajduje się fraza z nazwą technologii, oraz w jego tytule, abstrakcie, lub wykazie słów kluczowych znajduje się, choć jedno ze słów kluczowych definicji dziedziny.
  \item Następnie zdefiniowany warunek zostaje wysłany do odpowiedniego portalu internetowego. W odpowiedzi program dostaje listę pozycji spełniających kryterium wyszukiwania.
  \end {itemize}
\item Zwróconą listę pozycji program grupuję po dacie publikacji i zapamiętuję samą ilość pozycji opublikowaną w danym roku.
\item Zapis wyniku działania bot-a następuje do plików tekstowych. Dane z poszczególnych portali zapisywane są w różnych katalogach (citeseerx, dblp, espacenet, google-patents, scholar). Nazwa plików wynikowych stanowi wykaz słów kluczowych poszczególnych dziedzin (dla jednej dziedziny powstaje jeden plik wynikowy). Dane w pliku są zapisywane w kolejnych wierszach. Pojedynczy wiersz zawiera:
\begin{verbatim}
,,Rok'';,,Ilość dla technologii 1'';,,Ilość pozycji dla technologii 2''
\end{verbatim}
\end {itemize}


\section{Plik konfiguracyjny}

\begin {itemize}
\item Sekcja \textit{citeseerx}, \textit{dblp}, \textit{googlePat}, \textit{scholar} i \textit{espacenet} służy do włączania i wyłączania przeszukiwania na danych portalach.
\item Sekcja \textit{fromYear} i \textit{toYear} służy do definicji zakresu lat.
\item Sekcja \textit{outPutFolder} ustawia katalog, w którym będź zapisywane wyjściowe dane.
\item Sekcja \textit{useCases} definiuje listę dziedzin.
\item Sekcja \textit{categories} definiuje listę technologii.
\end {itemize}

Zawartość przykładowego pliku: 
\begin{verbatim}
<?xml version=,,1.0'' encoding=,,UTF-8''?> 
  <java version=,,1.6.0_14'' class=,,java.beans.XMLDecoder''> 
    <object class=,,BotConfig''>
      <void property="googlePat"> 
       <boolean>true</boolean> 
      </void>  
      <void property="citeseerx"> 
       <boolean>true</boolean> 
      </void> 
      <void property="dblp"> 
       <boolean>true</boolean> 
      </void> 
      <void property="espacenet"> 
       <boolean>true</boolean> 
      </void> 
      <void property="scholar"> 
       <boolean>true</boolean> 
      </void>

      <void property="fromYear"> 
       <int>1990</int> 
      </void> 
      <void property="toYear"> 
       <int>2009</int> 
      </void> 

      <void property="outPutFolder"> 
       <string>C:\BiblioBot</string> 
      </void> 
 

      <void property="useCases"> 
       <array class="java.lang.String" length="8"> 
        <void index="0"> 
         <string></string> 
        </void> 
        <void index="1"> 
         <string>chemistry|pharmacology|biology</string> 
        </void> 
        <void index="2"> 
         <string>business|economics|managment</string> 
        </void> 
        <void index="3"> 
         <string>energy|power|electricity</string> 
        </void> 
        <void index="4"> 
         <string>transport|logistics|vehicle</string> 
        </void> 
        <void index="5"> 
         <string>manufacture|automation</string> 
        </void> 
        <void index="6"> 
         <string>medicine|medical</string> 
        </void> 
        <void index="7"> 
         <string>social|human|psychology</string> 
        </void> 
       </array> 
      </void> 
      <void property="categories"> 
       <array class="java.lang.String" length="7"> 
        <void index="0"> 
         <string>data+mining</string> 
        </void> 
        <void index="1"> 
         <string>decision+support+system</string> 
        </void> 
        <void index="2"> 
         <string>expert+system</string> 
        </void> 
        <void index="3"> 
         <string>knowledge+base</string> 
        </void> 
        <void index="4"> 
         <string>knowledge+engineering</string> 
        </void> 
        <void index="5"> 
         <string>machine+learning</string> 
        </void> 
        <void index="6"> 
         <string>semantic+web</string> 
        </void> 
       </array> 
      </void>

    </object> 
  </java> 
\end{verbatim}
